//3D vector class
#ifndef _HELIX_VECTOR_H_
#define _HELIX_VECTOR_H_

#include <Math.h>
#include "../HObject.h"
#include "../Log.h"

namespace helix
{

	class MY_CLASS Vector: public HObject			//vector class extends object class
	{
	protected:
		float vector[3];					//the vector data

	public:
		Vector();							//constructor
		Vector(float x,float y,float z);	//second constructor

		Vector operator + (Vector &v);	//overload the + operator to add vectors
		Vector operator += (Vector &v);	//overload the += operator to add vectors
		Vector operator - (Vector &v);	//overload - operator to subtract vectors
		Vector operator * (Vector &v);	//same as above but multiply
		Vector operator * (float &f);		//multiply by a scalar
		Vector operator / (Vector &v);	//divide by a vector
		Vector operator / (float &f);		//divide by a scalar
		bool operator == (Vector &v);		//equals operator
		bool operator != (Vector &v);		//not equals operator

		void setVector(Vector v);
		float* getArray();

		float x();
		float y();
		float z();

		float dot(Vector v);				//returns the dot product with another vector
		Vector cross(Vector v);				//returns the cross product with another vector
		Vector normalize();					//returns a normalized vector			
		float length();						//returns the length of the vector

		virtual void Print();				//print data about the object
	};

	#define Point Vector

}

#endif